// 给你一个整数数组 nums 和一个整数 k ，请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

// 示例 1：
// 输入：nums = [1,1,1,2,2,3], k = 2
// 输出：[1,2]

// 示例 2：
// 输入：nums = [1], k = 1
// 输出：[1]

// 示例 3：
// 输入：nums = [1,2,1,2,1,2,3,1,3,2], k = 2
// 输出：[1,2]

function topKFrequent(nums, k) {
  // 统计每个元素出现的频率
  const freqMap = new Map();
  nums.forEach((num) => {
    freqMap.set(num, (freqMap.get(num) || 0) + 1);
  });

  // 将频率映射转换为数组，并按频率降序排序
  const freqArray = [...freqMap.entries()].sort((a, b) => b[1] - a[1]);

  // 取前 k 个元素的数值
  const res = freqArray.slice(0, k).map((item) => item[0]);

  return res;
}